char a[]="12345\0678";输出的是1234578,不太懂这是为什么

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:50:09
\0不是结束符吗,怎么把\06消去了,内存中,直接忽略之

因为数字都连写的,所以编译器是这么认为的:
"1" "2" "3" "4" "5" "\067" "8" "\0"
注意 "\067" \ 是转义字符,后面 067 表示八进制,查 ASCII 可以看到八进制的 67 对应 十进制的 55,对应字符刚好为 '7'

解释转移序列的时候,会把\067解释,而不是\0,如果要求输出12345,请写:

"12345\0""678"

那是转义字符,就像\d代表任何数字一样